/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package valida;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Writer;
import java.sql.Connection;
import java.util.logging.Level;
import java.util.logging.Logger;
import valida.Formularios.AsistenteArchivo.FrameAsistente;
import valida.Formularios.MaestroArchivos;
import valida.Formularios.MaestroReglas;
import valida.Formularios.VentanaSplash;
import valida.Recursos.AdministradorBaseDatos;
import valida.Util.CargadorPropiedadesBD;
import valida.Util.PropiedadesDB;
import valida.Util.PropiedadesGeneral;

/**
 *
 * @author Andres
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Thread carga= new Thread(){
                @Override
                public void run() {
                    VentanaSplash ventanaSplash = new VentanaSplash();
                    ventanaSplash.setActividadActual("Cargando Propiedades Iniciales");
                    //Instanciamos Las Propiedades Utilizadas en el Validador
                    new CargadorPropiedadesBD();
                    new PropiedadesDB();
                    //llamamos el GC para Liberar Memoria
                    System.gc();
                    //Establecemos Variables de Salida si es el Caso
                    setSalidaEstandar();
                    //Obtenemos la Conexion a Base de Datos
                    ventanaSplash.setActividadActual("Comprobando Base de Datos");
                    AdministradorBaseDatos.setEstructura();
                    ventanaSplash.dispose();                    
                    FrameAsistente asistente = new FrameAsistente();



                }

            private void setSalidaEstandar() {

                FileOutputStream foErr;
                FileOutputStream fo;
                        try {
                    foErr = new FileOutputStream("logErr.log"){

                        @Override
                        public void write(int b) throws IOException {
                            if(PropiedadesGeneral.DEBUG){
                                super.write(b);
                            }
                        }

                    };
                    fo = new FileOutputStream("log.log"){

                        @Override
                        public void write(int b) throws IOException {
                            if(PropiedadesGeneral.DEBUG){
                                super.write(b);
                            }
                        }

                    };

                    PrintStream psErr = new PrintStream(foErr);
                    PrintStream ps = new PrintStream(fo);
                    System.setErr(ps);
                    System.setOut(ps);

                } catch (FileNotFoundException ex) {
                            System.err.println("No se puede establecer la salida Estanar de Debug.");
                }
            }
            };
            carga.start();
    }

}
